#define _MISSING_DS_MINGW440_ENABLED_ 1
#if defined(_MISSING_DS_MINGW440_ENABLED_)
#ifndef _MISSING_DS_MINGW440_
#define _MISSING_DS_MINGW440_ 1

//#include <strmif.h>

// - const CLSID CLSID_FilterGraph =					{0xE436EBB3, 0x524F, 0x11CE,{0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70}};
const CLSID CLSID_SampleGrabber =				{0xC1F400A0, 0x3F08, 0x11D3,{0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37}};
const CLSID CLSID_DivX =						{0x78766964, 0x0000, 0x0010,{0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71}};
const CLSID CLSID_CaptureGraphBuilder =			{0xBF87B6E0, 0x8C27, 0x11D0,{0xB3, 0xF0, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5}};
const CLSID CLSID_CaptureGraphBuilder2 =		{0xBF87B6E1, 0x8C27, 0x11D0,{0xB3, 0xF0, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5}};
const CLSID CLSID_AviSplitter =					{0x1B544C20, 0xFD0B, 0x11CE,{0x8C, 0x63, 0x00, 0xAA, 0x00, 0x44, 0xB5, 0x1E}};
// - const CLSID CLSID_SystemDeviceEnum =			{0x62BE5D10, 0x60EB, 0x11D0,{0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86}};
const CLSID CLSID_VideoInputDeviceCategory =	{0x860BB310, 0x5D01, 0x11D0,{0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86}};
const CLSID CLSID_AVIDec =						{0xCF49D4E0, 0x1115, 0x11CE,{0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70}};
const CLSID CLSID_LegacyAmFilterCategory =		{0x083863F1, 0x70DE, 0x11d0,{0xBD, 0x40, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86}};
const CLSID CLSID_CQzFilterClassManager =		{0x083863F1, 0x70DE, 0x11d0,{0xBD, 0x40, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86}};

const CLSID CLSID_NullRenderer =				{0xC1F400A4, 0x3F08, 0x11D3,{0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37}};
const CLSID CLSID_VideoRenderer =               {0x70e102b0, 0x5556, 0x11ce,{0x97, 0xc0, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}};
const CLSID CLSID_VideoRendererDefault =        {0x6bc1cffa, 0x8fc1, 0x4261,{0xac, 0x22, 0xcf, 0xb4, 0xcc, 0x38, 0xdb, 0x50}};
// - const CLSID CLSID_VideoMixingRenderer9 =		{0x51B4ABF3, 0x748F, 0x4E3B,{0xA2, 0x76, 0xC8, 0x28, 0x33, 0x0E, 0x92, 0x6A}};


const CLSID CLSID_VideoCapture =				{0xf80b6e95, 0xb55a, 0x4619,{0xae, 0xc4, 0xa1, 0xe , 0xae, 0xde, 0x98, 0xc }};

const CLSID CLSID_Colour =						{0x1643e180, 0x90f5, 0x11ce,{0x97, 0xd5, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}};
// - const CLSID CLSID_MemoryAllocator = 			{0x1e651cc0, 0xb199, 0x11d0,{0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45}};


//const IID IID_IVMRWindowlessControl9 =  {0x8F537D09, 0xF85E, 0x4414,{0xB2, 0x3B, 0x50, 0x2E, 0x54, 0xC7, 0x99, 0x27}};
const IID IID_IFilterGraph =            {0x56A8689F, 0x0AD4, 0x11CE,{0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70}};
//- const IID IID_IVMRFilterConfig9 =       {0x5A804648, 0x4F66, 0x4867,{0x9C, 0x43, 0x4F, 0x5C, 0x82, 0x2C, 0xF1, 0xB8}};
//- const IID IID_IGraphBuilder = 			{0x56A868A9, 0x0AD4, 0x11CE,{0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70}};
//- const IID IID_IBaseFilter =             {0x56A86895, 0x0AD4, 0x11CE,{0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70}};
const IID IID_ISampleGrabber =          {0x6B652FFF, 0x11FE, 0x4FCE,{0x92, 0xAD, 0x02, 0x66, 0xB5, 0xD7, 0xC7, 0x8F}};
const IID IID_ICaptureGraphBuilder2=	{0x93E5A4E0, 0x2D50, 0x11D2,{0xAB, 0xFA, 0x00, 0xA0, 0xC9, 0xC6, 0xE3, 0x8D}};
//- const IID IID_ICreateDevEnum =			{0x29840822, 0x5B84, 0x11D0,{0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86}};
const IID IID_ISampleGrabberCB =		{0x0579154A, 0x2B53, 0x4994,{0xB0, 0xD0, 0xE7, 0x73, 0x14, 0x8E, 0xFF, 0x85}};
const IID IID_IGraphConfig =			{0x03A1EB8E, 0x32BF, 0x4245,{0x85, 0x02, 0x11, 0x4D, 0x08, 0xA9, 0xCB, 0x88}};
const IID IID_IVMRWindowlessControl =   {0x0EB1088C, 0x4DCD, 0x46F0,{0x87, 0x8F, 0x39, 0xDA, 0xE8, 0x6A, 0x51, 0xB7}};
//- const IID IID_IEnumMediaTypes =			{0x89c31040, 0x846b, 0x11ce,{0x97, 0xd3, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a}};







const GUID MEDIASUBTYPE_MJPG 		= {0x47504A4D, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
const GUID MEDIASUBTYPE_ARGB32		= {0x773C9AC0,0x3274,0x11D0,0xB7,0x24,0x0,0xAA,0x0,0x6C,0x1A,0x1};
const GUID MEDIASUBTYPE_Overlay		= {0xE436EB7F,0x524F,0x11CE,0x9F,0x53,0x0,0x20,0xAF,0xB,0xA7,0x70};
const GUID MEDIASUBTYPE_RGB1		= {0xE436EB78,0x524F,0x11CE,0x9F,0x53,0x0,0x20,0xAF,0xB,0xA7,0x70};
const GUID MEDIASUBTYPE_RGB24		= {0xE436EB7D,0x524F,0x11CE,0x9F,0x53,0x0,0x20,0xAF,0xB,0xA7,0x70};
//const GUID MEDIASUBTYPE_RGB32		= {0xE436EB7E,0x524F,0x11CE,0x9F,0x53,0x0,0x20,0xAF,0xB,0xA7,0x70};
const GUID MEDIASUBTYPE_RGB4		= {0xE436EB79,0x524F,0x11CE,0x9F,0x53,0x0,0x20,0xAF,0xB,0xA7,0x70};
const GUID MEDIASUBTYPE_RGB555		= {0xE436EB7C,0x524F,0x11CE,0x9F,0x53,0x0,0x20,0xAF,0xB,0xA7,0x70};
const GUID MEDIASUBTYPE_RGB565		= {0xE436EB7B,0x524F,0x11CE,0x9F,0x53,0x0,0x20,0xAF,0xB,0xA7,0x70};
const GUID MEDIASUBTYPE_RGB8		= {0xE436EB7A,0x524F,0x11CE,0x9F,0x53,0x0,0x20,0xAF,0xB,0xA7,0x70};
/* Packed YUV formats */
const GUID MEDIASUBTYPE_YUYV = {0x56595559, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
const GUID MEDIASUBTYPE_Y411 = {0x31313459, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
const GUID MEDIASUBTYPE_Y211 = {0x31313259, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
//const GUID MEDIASUBTYPE_YUY2 = {0x32595559, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
const GUID MEDIASUBTYPE_YVYU = {0x55595659, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
const GUID MEDIASUBTYPE_UYVY = {0x59565955, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};

/* Planar YUV formats */
const GUID MEDIASUBTYPE_YVU9 = {0x39555659, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};

//const GUID MEDIASUBTYPE_YV12 = {0x32315659, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
const GUID MEDIASUBTYPE_IYUV = {0x56555949, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}}; /* identical to YV12 */

const GUID MEDIASUBTYPE_Y41P = {0x50313459, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
//const GUID MEDIASUBTYPE_I420 = {0x30323449, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};
const GUID MEDIASUBTYPE_AYUV = {0x56555941, 0x0000, 0x0010, {0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}};



const GUID PIN_CATEGORY_CAPTURE			= {0xfb6c4281, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_PREVIEW			= {0xfb6c4282, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_ANALOGVIDEOIN	= {0xfb6c4283, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_VBI				= {0xfb6c4284, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_VIDEOPORT		= {0xfb6c4285, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_NABTS			= {0xfb6c4286, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_EDS				= {0xfb6c4287, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_TELETEXT		= {0xfb6c4288, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_CC				= {0xfb6c4289, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_STILL			= {0xfb6c428a, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_TIMECODE		= {0xfb6c428b, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};
const GUID PIN_CATEGORY_VIDEOPORT_VBI	= {0xfb6c428c, 0x0353, 0x11d1, 0x90, 0x5f, 0x00, 0x00, 0xc0, 0xcc, 0x16, 0xba};





//typedef IUnknown IGraphBuilder;
typedef IUnknown IFileSinkFilter;
//typedef IUnknown IBaseFilter;

typedef struct IAMCopyCaptureFileProgress IAMCopyCaptureFileProgress;

struct ICaptureGraphBuilder2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFiltergraph(
        IGraphBuilder* pfg) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFiltergraph(
        IGraphBuilder** ppfg) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOutputFileName(
        const GUID* pType,
        LPCOLESTR lpstrFile,
        IBaseFilter** ppf,
        IFileSinkFilter** ppSink) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindInterface(
        const GUID* pCategory,
        const GUID* pType,
        IBaseFilter* pf,
        REFIID riid,
        void** ppint) = 0;

    virtual HRESULT STDMETHODCALLTYPE RenderStream(
        const GUID* pCategory,
        const GUID* pType,
        IUnknown* pSource,
        IBaseFilter* pfCompressor,
        IBaseFilter* pfRenderer) = 0;

    virtual HRESULT STDMETHODCALLTYPE ControlStream(
        const GUID* pCategory,
        const GUID* pType,
        IBaseFilter* pFilter,
        REFERENCE_TIME* pstart,
        REFERENCE_TIME* pstop,
        WORD wStartCookie,
        WORD wStopCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE AllocCapFile(
        LPCOLESTR lpstr,
        DWORDLONG dwlSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyCaptureFile(
        LPOLESTR lpwstrOld,
        LPOLESTR lpwstrNew,
        int fAllowEscAbort,
        IAMCopyCaptureFileProgress* pCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindPin(
        IUnknown* pSource,
        PIN_DIRECTION pindir,
        const GUID* pCategory,
        const GUID* pType,
        BOOL fUnconnected,
        int num,
        IPin** ppPin) = 0;

};

#endif
#endif
